Flash codes are codes that are under research and development with the aim to improve reliability of flash memories. When data is overwritten to the same page of a flash memory, blocks that include the page are generally erased before the overwriting. Block erasure imposes a heavy load on flash memories and leads to quality deterioration if the frequency of erasures in a flash memory increases. Thus, if it is possible to perform overwriting without performing erasure as much as possible, the frequency of erasures in a flash memory can be decreased, and quality deterioration of a flash memory can be suppressed. Flash codes are codes that enable such overwriting, and various types of flash codes are known.
Flash codes come in two schemes: one scheme expresses multiple bits of data using multiple cells (memory cells of a flash memory) and the other scheme expresses one bit of data using multiple cells.
In this specification, a scheme that expresses f1 bits of data using f2 cells (where f1 and f2 are integers of 2 or more) is referred to as a f1:f2 scheme, and a scheme that expresses one bit of data using f3 cells (where f3 is an integer of 2 or more) will be referred to as a 1:f3 scheme.